package com.chenziwen.scala.chapter08

object Scala10_MapFunction {
  def main(args: Array[String]): Unit = {
    val list = List(1, 2, 3)

    def multiply(num: Int): Int = {
      num * 2
    }
    // map方法可以接收一个函数作为参数
    // map方法会将集合的每一个元素作为参数传递给函数，然后将结果放置在新的集合里
    println(list.map(multiply))
    // 上面的效果可以用下面的写法简单实现
    println(list.map(_ * 2))

    val names = List("Alice", "Bob", "Nick")

    def upper(s: String): String = {
      s.toUpperCase
    }
    // 扁平化，将集合中的每个元素拆开成一个个字符，然后再调用upper方法
    println(names.flatMap(upper))

    def startA(s: String): Boolean = {
      s.startsWith("A")
    }
    // 过滤
    println(names.filter(startA))

  }
}
